package kuonta.service;

import kuonta.domain.Congregacao;
import kuonta.domain.FolhaContas;
import kuonta.domain.FolhaContasId;
import kuonta.domain.ItemFolhaContas;
import kuonta.domain.ItemRecibo;
import kuonta.domain.Recibo;
import kuonta.domain.TipoRecibo;

import org.cerberus.core.application.FacadeCrud;
import org.cerberus.core.persistence.orm.Dao;
import org.joda.time.DateTime;

import testes.unit.Util;

@SuppressWarnings("unchecked")
public class ServiceRecibo extends FacadeCrud<Recibo, Long>{
		
	private static Dao<Congregacao, Integer> daoCongregacao = (Dao)Util.getBean("basicosDao");
	private static Dao<FolhaContas, FolhaContasId> daoFolha = (Dao)Util.getBean("basicosDao");
	
	@Override
	public void save(Recibo recibo) {
		super.save(recibo);		
	}
	
	public void saveReciboWithFolhaItens(Recibo recibo, Integer idCongregacao){
		this.save(recibo);
		
		Congregacao congregacao = daoCongregacao.findById(Congregacao.class,idCongregacao);
			
		FolhaContasId folhaId = new FolhaContasId(new DateTime(recibo.getData().getTime())
		.getYear(), new DateTime(recibo.getData().getTime())
		.getMonthOfYear());
		
		FolhaContas folha = daoFolha.findById(FolhaContas.class, folhaId);
		
		if(folha==null){			
			daoFolha.save(new FolhaContas(folhaId));
			folha = new FolhaContas(folhaId);
		}
		
		folha.setCongregacao(congregacao);
		
		for (ItemRecibo itemRecibo : recibo.getItens()) {
			ItemFolhaContas itemFolha = new ItemFolhaContas();
			
			itemFolha.setItemRecibo(itemRecibo);
			itemFolha.setData(itemRecibo.getData());
//			itemFolha.setDescricao(itemRecibo.getCodigo().toString());
//			itemFolha.setCodigo(itemRecibo.getCodigo());
			
			if(recibo.getTipo()==TipoRecibo.ENTRADA){
//				itemFolha.setEmMaos(new ValorItemFolha(itemRecibo.getValor(), new BigDecimal(0)));				
			}
			
			if(recibo.getTipo()==TipoRecibo.SAIDA){
//				itemFolha.setEmMaos(new ValorItemFolha(new BigDecimal(0), itemRecibo.getValor()));				
			}
			folha.getItensFolha().add(itemFolha);
		}			
		
		daoFolha.save(folha);
	}

}
